<?php
namespace App\Model;

use App\Model\Auth;
// 引入中间表的模型类
use App\Model\address;
use App\Model\UserAuth;
use App\Observers\SmbmsObserver;
use Illuminate\Foundation\Auth\User;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;



class UserSmbms2 extends Model{
    use Notifiable;
    // $2y$10$3KcCThGhk3EJfN534ZiUveIKtYihU4VuBiIq3NwJ5UhkdZDLqXGOS
    const SEX_UN=NULL;
    const SEX_GIRL="1";
    const SEX_BOY="2";

    protected $primaryKey = 'id';

    protected $table ="smbms_user";

    protected $guard = 'UserSmbms';

    // protected $fillable = [
    //     'userName', 'password'
    //   ];
    protected $hidden = [
        'password', 'remember_token',
    ];

    // 设置create()函数的黑名单
    // 赋值空数组代表所有的属性都能使用create函数保存数据
    protected $guarded=[];

    public $timestamps=true;


    // 用户基础表和用户住址表是一对一的关系hasOne，设置一对一查询关系
    public function addressInfo(){
        // 设置从表的模型，设置从表的外键名，本表的主键名
        return $this->hasOne(address::class,"userId","id");
    }

    // 多对多查询
    public function auths(){

        // 1.关联表的模型，2.中间表的表名，
        // 3.存放于中间表中本模型的id名，4.存放于中间表中被关联表的id名
        return $this->belongsToMany(Auth::class,"smbms_user_auth","user_id","auth_id");
    }

    // 添加模型事件属性
    protected $dispatchesEvents=[
        // 为该模型类的creating事件添加自定义事件类
        "creating"=>SmbmsObserver::class
    ];

    protected function getDateForm(){

        return time();
    }

    protected function asDateForm($val){
        
        return $val;
    }

    public function sex($ind=null){

        $sexArr=[
            self::SEX_UN=>"人妖",
            self::SEX_GIRL=>"女",
            self::SEX_BOY=>"男"
        ];

        // 判断传进来的数值是否存在的键是否存在于上面性别对应数组中
        if($ind!=null){
            return array_key_exists($ind,$sexArr)?$sexArr[$ind]:$sexArr[self::SEX_UN];
        }
        return $sexArr;
    }
}